package com.ts.api.common.constant.product;

import com.gitee.apanlh.util.base.Eq;
import com.ts.api.module.product.entity.po.ProductPlanPO;

/**
 *  计划模式版本枚举
 */
public enum ProductPlanVersionMode {

    /** MD5模式 */
    MD5(0,          null),
    /** 手机号8位掩码模式 */
    PHONE_MASK_8(1,  8),
    /** 手机号9位掩码模式 */
    PHONE_MASK_9(2,  9),
    /** 手机号10位掩码模式 */
    PHONE_MASK_10(3, 10),
    /** 撞库返回直接联登-表单模式-全资质 */
    DATA_EXCHANGE_FEDERATE_FORM(4, null),
    /** 撞库匹配-联登表单模式-全资质 */
    FEDERATE_FORM(5, null),
    ;

    /** 版本号 */
    private final Integer versionMode;
    /** 剪切长度 */
    private final Integer cutSize;
    /**
     * 构造函数
     *
     * @param version
     */
    private ProductPlanVersionMode(Integer version, Integer cutSize) {
        this.versionMode = version;
        this.cutSize = cutSize;
    }

    public Integer getVersionMode() {
        return versionMode;
    }

    public Integer getCutSize() {
        return cutSize;
    }

    public boolean hasVersionMode(Integer versionMode) {
        return Eq.object(this.getVersionMode(), versionMode);
    }

    public boolean hasVersionMode(ProductPlanPO productPlanPO) {
        return Eq.object(this.getVersionMode(), productPlanPO.getVersionMode());
    }

    /**
     *  获取枚举
     *  @param planVersionMode
     *  @return
     */
    public static ProductPlanVersionMode getEnum(Integer planVersionMode) {
        ProductPlanVersionMode[] values = ProductPlanVersionMode.values();
        for (ProductPlanVersionMode value : values) {
            if (Eq.object(value.getVersionMode(), planVersionMode)) {
                return value;
            }
        }
        return null;
    }
}
